草庐IT

DOM 封装

全部标签

PHP Simple Html Dom获取div的纯文本,但避开所有其他标签

我使用PHPSimpleHtmlDom来获取一些html,现在我有一个htmldom就像下面的代码,我需要获取纯文本内部div,但要避免p标签及其内容(只返回111111),谁能帮忙我?提前致谢!0000000011111122222222 最佳答案 这取决于你所说的“避免p标签”是什么意思。如果你只想删除标签,那么只需运行strip_tags()它应该可以满足您的需求。如果您真的只想返回“11111”(即去除标签及其内容),那么这不是一个可行的解决方案。为此,像这样的东西可能起作用:$myDiv=$html->find('div'

php - 如何使用 Simple HTML Dom Parser 处理页面抓取错误

与Facebook类似,我正在构建一个允许用户发布链接的应用。用户在输入字段中填写链接,Controller返回TitleLinkMetadescriptionImages(asthumbnails)到View。Controller代码如下:$url=$this->input->post('posts_link');if(!empty($url)){$html=file_get_html($url);foreach($html->find('img')as$element){$src="";$src=$element->src;if(preg_match("/\.jp[e]?g$/i"

PHP dom 在链接中包装图片并在图片标签前添加 span

所以我已经这样做了很长一段时间,我得到的最好的结果是将图像包装在一个链接中,并在图像标签后加上一个跨度:但我想要的是:我尝试了各种变体和位置$img->parentNode->appendChild($dom->createElement('span'),$img);以及在我的代码中的各种地方使用insertBefore()并且我完全没有想法,因为我对phpDOM东西还很陌生。我的来源:foreach($dom->getElementsByTagName('img')as$img){$fancyHref=$dom->createElement('a');$clone=$fancyHre

php: dom 用另一个 dom 的根节点替换节点

我需要从其他文档的整个节点更新一个节点:原始XML:Bat我想要的输出:bi第一次尝试:用文档片段替换$original="Bat";$replace="Bi";$dom=newDOMDocument('1.0','utf-8');$dom->loadXML($original);$xpath=newDOMXpath($dom);$b=$xpath->query('//b')->item(0);$fragment=$dom->createDocumentFragment();$fragment->appendXML($replace);$dom->replaceChild($fragm

PHP多重封装函数全局变量作用域

这是我遇到的一个问题的解决方案,但在任何地方都找不到答案。它涉及全局变量作用域和多个函数。基本上,我想要一个函数来声明变量,然后让第二个嵌套函数使用这些变量。当脚本声明变量,然后在声明global$var1,$var2;后调用使用这些变量的函数时,这会很好地工作。但是,我在嵌套函数看到父函数声明的变量时遇到问题,使用与调用函数的脚本相同的代码逻辑。解决方案是这样写:functionfunction_1(){global$var1,$var2;$var1=0;$var2=0;functionfunction_2(){global$var1,$var2;}function_2();//ca

php - 简单的 HTML DOM - 子选择器 (CSS)

我正在尝试使用>组合器选择parentdiv.element的(直接)child,但它失败了。HTML:testtest2PHP:$html->find('div.element>p',0);我希望选择直接的p元素。如果它是一个嵌套的后代-它不应该返回任何东西,但它会返回test2。如何编写返回test,而不是test2?谢谢更新:这里关于SO的普遍共识似乎是简单HTMLDOM不好。我最终按照Phil的建议使用PHP的DOMDocument编写了我的代码。我确实测试了nevermind的解决方案,它也确实有效。感谢所有帮助和快乐编码 最佳答案

php - 将更改写回 Zend Dom 查询对象

我想遍历HTML文档中的图像并设置宽度/高度(如果它们不存在)。这是一小段工作代码:$content='';$dom=newZend_Dom_Query($content);$imgs=$dom->query('img');foreach($imgsas$img){$width=(int)$img->getAttribute('width');$height=(int)$img->getAttribute('height');if((0==$width)&&(0==$height)){$img->setAttribute('width',100));$img->setAttribute

表单和 DOM 操作的 PHP 安全性

我与一位同事就PHP的安全性进行了一次有趣的讨论。假设某人有一个运行标准HTML表单的PHP站点。攻击者决定使用Chrome开发者工具并添加DOMenctype="multipart/form-data"和一个文件输入。攻击者上传一个文件,如果它是病毒,它可能不会执行,但它在那一刻仍在使用带宽/存储。这样做文件会进入PHP/tmp目录吗?这不会使每个表单都有些不安全,因为用户可以以任何形式上传文件吗?如果100,000人将其添加到DOM并上传一个随机的千兆字节文件,情况会怎样?这不会暂时让他们达到他们的带宽和/或存储标记吗? 最佳答案

PHP - 在函数范围内引用时的封装

我正在浏览PHP7.0changes遇到了ClosureCall.文档中的代码如下。x;};//thisline$getX=$getXCB->bindTo(newA,'A');//intermediateclosureecho$getX();我的问题是第一条评论之后的行如何返回x值?这不会破坏封装吗?看起来当x在函数闭包中被引用时,出于某种原因我们实际上是在类范围内。 最佳答案 实际上,使用bindTo创建的新函数将该新函数的作用域设置为A。这如documentationonbindTo中所述:Createandreturnanew

php - Zend_Dom 为您提供了一个 DOMElement...我该如何使用它?

我正在尝试使用Zend_Dom进行一些非常简单的屏幕抓取(我想从我网站上的一小块新闻项目中抓取标题、一些正文和链接),但我不确定如何处理它给我的DOMElement。在Zend_Dom的手册中,代码说:foreach($resultsas$result){//$resultisaDOMElement}我如何使用这个DOMElement?一个详细的例子(在谷歌上寻找anchor元素):$url='http://google.com/';$client=newZend_Http_Client($url);$response=$client->request();$html=$respons